#!/bin/bash
#
# cronozip.sh
#
# compacta e purga os logs rotacionados pelo cronolog
#
# rcampos@uolinc.com
# $Id: cronozip.sh,v 1.1 2004/02/09 13:34:57 rcampos Exp rcampos $
#
# CHANGELOG
#
# 20041028 - bmaimoni
#	- If's para identificar SO e definir variaveis
# 20060217 - bmaimoni
#	- Find parameters switched (-type -maxdepth)
#	- Gzip running with nice

OS=`uname -s`

if [ $OS = "Linux" ]; then
	DATE=`/bin/date -d '1 day ago' +%Y%m%d`
	HOSTNAME=`/bin/hostname`
	GZIP=/bin/gzip
	FIND=/usr/bin/find
	NICE=/usr/bin/nice
elif [ $OS = "SunOS" ]; then
	DATE=`/usr/gnu/bin/date -d '1 day ago' +%Y%m%d%H%M`
	HOSTNAME=`/usr/bin/hostname`
	GZIP=/usr/gnu/bin/gzip
	FIND=/usr/gnu/bin/find
	NICE=/usr/bin/nice
else
        echo "Sistema operacional nao reconhecido..."
        exit -1
fi

# Diretorio onde os logs serao compactados e purgados
LOGPATH=/export/logs_gz

# Arquivo de referencia, arquivos mais velhos do que ele
# serao compactados
CURRENTLOG=/export/logs/accesslog_80

# Arquivos mais velhos do que EXPIRETIME sao apagados
# EXPIRETIME sao dias
EXPIRETIME=30

# Opcoes padrao do find
FINDOPTS='-maxdepth 1 -type f -daystart'

####### fim das opcoes ########

# verifica se os binarios necessarios existem
[ -x ${FIND} ] || exit 1
[ -x ${GZIP} ] || exit 1

# gzipa os logs mais velhos do que o arquivo de referencia
${NICE} -n 15 ${FIND} ${LOGPATH} ${FINDOPTS} ! -newer ${CURRENTLOG} ! -name \*gz -exec ${GZIP} {} ';'

# purga os logs com mais do que EXPIRETIME dias
${NICE} -n 15 ${FIND} ${LOGPATH} ${FINDOPTS} -name \*gz -mtime +${EXPIRETIME} -exec /bin/rm {} ';'
